var roleId=-1;
var divId="";
var flag=true;
var editRoleMenu = {
    init : function() {
    	roleId = getUrlParam("roleId");
    	systemType = getUrlParam("systemType");
    	divId="rolemenu"+roleId;
        // 初始化事件绑定
    	editRoleMenu.evenBind();
    	editRoleMenu.loadUserMenu();
    },
    evenBind : function() {
        // ----------------------------------------------------------------------->
        // 设置用户菜单表单操作
        // ----------------------------------------------------------------------->
        // 取消
        $('#cancelSetRoleMenu').bind('click', function() {
        	editRoleMenu.closeDiv();
        });

        // 提交
        $('#submitSetRoleMenu').bind('click', function() {
        	if(flag){
	    		flag=false;
	    		var roleId = $('#menuRoleId').val();
	        	
	            var checkedMenuIds = $("input[type=checkbox][name=id]:checked");
	            var menus = [];
	            var i = 0;
	            if (checkedMenuIds.size() > 0) {
	                checkedMenuIds.each(function() {
	                	//if(!$(this).hasClass("parentId")){
	                		var menuId = $(this).val();
	                        var menu={};
	                        menu.menuId=menuId;
	                        
	                        var checkboxName="checkbox"+menuId;
	                        var checkedButtonIds = $(".buttonCheckbox[name='"+checkboxName+"']:checked");
	                        var buttonIds=[];
	                        var j=0;
	                        if (checkedButtonIds.size() > 0) {
	                            checkedButtonIds.each(function() {
	                                var buttonId = $(this).val();
	                                var button={};
	                                button.buttonId=buttonId;
	                                buttonIds.push(button);
	                            });
	                        }
	                        menu.buttonList=buttonIds;
	                        menus.push(menu);
	                	//}                  
	                });
	            }
	            
	            var menuJson=JSON.stringify(menus);
	          
	            ajaxProcess({
	                url : getProjectUrl('/bfs/menu/rolemenu/add'),
	                data : {
	                    roleId : roleId,
	                    menuJson:menuJson
	                },
	                requestType : 'POST',
	                async : true,
	                successHandle : function(data) {
	                	flag=true;
	                	$.messager.alert('提示','操作成功！','',function(){
	                		editRoleMenu.closeDiv();
	                	});
	                }
	            });
        	}

        });
    },  
    closeDiv : function() {
    	window.parent.$('#'+divId).dialog('destroy');
    },
    refreshData : function() {
    	editRoleMenu.loadUserMenu();
    },
    beforeLoad : function() {
        $('#createUserDiv').dialog('destroy', true);
        $('#editUserDiv').dialog('destroy', true);
        $('#setUserMenuDiv').dialog('destroy', true);
        $('#setUserResourceDiv').dialog('destroy', true);
    },
    // ----------------------------------------------------------------------->
    // 打开设置用户菜单的窗口
    // ----------------------------------------------------------------------->
    loadUserMenu : function() {
    	$('#setRoleMenuGrid').treegrid({
            url : getProjectUrl('/bfs/menu/listByRole'),
            queryParams : {
                roleId : roleId,
                systemType:systemType
            },
            idField : 'id',
            treeField : 'text',
            columns : [ [
            {
                field: 'id', 
                title: '<input type="checkbox" name="checkboxmenu" class="selectMenuAll">', 
                width: 30,
                formatter: function (value, row, index) {
                	if(isEmpty(row.parentId)){
                		return "<input type=\"checkbox\" class=\"parentId\" name=\"id\" value=\"" + row.id + "\" >";
                	}else{
                		return "<input type=\"checkbox\"  name=\"id\" value=\"" + row.id + "\" >";
                	}                
                }
            },{
                title : '菜单名称',
                field : 'text',
                width : 200,
                align:'left'
            }, {
                title : '<input type="checkbox" class="menuCheckbox selectBtnAll" name="checkboxmenu"/>菜单按钮',
                field : 'buttonList',
                width : 400,
                align:'left',
                formatter: function(value,row,index){
                    if(!value || value.length ===0){
                        return value;
                    }
                    var checkStr='';
                    var checklength=0;
                   
                    for(var i=0;i<value.length;i++){
                        if(value[i].checked){
                        	checklength++;
                            checkStr+='<span class="fl"><input type="checkbox" class="menuCheckbox buttonCheckbox" name="checkbox'+row.id+'" value="'+value[i].buttonId+'" checked="checked" />'+value[i].buttonName+"</span>";
                        }else{
                            checkStr+='<span class="fl"><input type="checkbox" class="menuCheckbox buttonCheckbox" name="checkbox'+row.id+'" value="'+value[i].buttonId+'"/>'+value[i].buttonName+"</span>";
                        }
                    }
                    
                    if(checklength===value.length){
                    	checkStr='<span class="fl"><input type="checkbox" class="menuCheckbox selectAll" name="checkbox'+row.id+'" checked="checked"/>全选</span>'+checkStr;
                    }else{
                    	checkStr='<span class="fl"><input type="checkbox" class="menuCheckbox selectAll" name="checkbox'+row.id+'"/>全选</span>'+checkStr;
                    }
                    
                    return checkStr;
                }
            }  ] ],
            singleSelect : false,
            rownumbers : true,
            method : 'POST',
            fitColumns : true,
            animate: true,
            checkbox : false,
            checkOnSelect : false,
            onLoadSuccess : function(row, data) {
            	uncheckAll();
                $("input[type=checkbox][name=id]").click(function() {
                	nodeClick($('#setRoleMenuGrid'), this);
                	if($("input[type=checkbox][name=id]:checked").length===$("input[type=checkbox][name=id]").length){ 
                 	   $(".selectMenuAll").prop("checked", true);  
                    }else{
                    	 $(".selectMenuAll").prop("checked", false);  
                    }
                });
               checkedMenu(data.rows);
               
               $(".selectAll").bind('click',function(){
                   var checkboxname=this.name;
                   if(this.checked){
                       $(":checkbox[name='"+checkboxname+"']").prop("checked", true);  
                       editRoleMenu.checkMenuNode(checkboxname);
                   }else{
                       $(":checkbox[name='"+checkboxname+"']").prop("checked", false);  
                   }
                   if($(".selectAll:checked").length===$(".selectAll").length){
                	   $(".selectBtnAll").prop("checked", true);   
                   }else{
                	   $(".selectBtnAll").prop("checked", false);  
                   }
               });
               $(".selectBtnAll").bind('click',function(){
                   var checkboxname=this.name;
                   if(this.checked){
                       $(":checkbox").prop("checked", true);  
                       editRoleMenu.checkMenuNode(checkboxname);
                   }else{
                       $(":checkbox").prop("checked", false);  
                   }
               });
               $(".selectMenuAll").bind('click',function(){
                   var checkboxname=this.name;
                   if(this.checked){
                       $(":checkbox").prop("checked", true);  
                       editRoleMenu.checkMenuNode(checkboxname);
                   }else{
                       $(":checkbox").prop("checked", false);  
                   }
               });
               $(".buttonCheckbox").bind('click',function(){
                   if(this.checked){//选中了按钮判断菜单是否选中，如果未选中变成选中
                       var buttonName=this.name;
                       editRoleMenu.checkMenuNode(buttonName);
                   }
                   var name=$(this).attr("name");
                   if($(".buttonCheckbox[name="+name+"]:checked").length==$(".buttonCheckbox[name="+name+"]").length){
                	   $(".selectAll[name="+name+"]").prop("checked", true);  
                   }else{
                	   $(".selectAll[name="+name+"]").prop("checked", false);  
                   }
                   if($(".selectAll:checked").length===$(".selectAll").length){
                	   $(".selectBtnAll").prop("checked", true);   
                   }else{
                	   $(".selectBtnAll").prop("checked", false);  
                   }
               });
               if($("input[type=checkbox][name=id]:checked").length===$("input[type=checkbox][name=id]").length){ 
            	   $(".selectMenuAll").prop("checked", true);  
               }
               if($(".selectAll:checked").length===$(".selectAll").length){
            	   $(".selectBtnAll").prop("checked", true);   
               }
            }
        });
        $('#menuRoleId').val(roleId);    
    },
    //判断菜单是否选中，如果未选中变成选中
    checkMenuNode:function(buttonName){
        var menuId=buttonName.substr(8);//"checkbox{id}"-->8
        var isChecked=$("input[type=checkbox][name=id][value=" + menuId + "]").prop("checked");
        if(!isChecked){
            $("input[type=checkbox][name=id][value=" + menuId + "]").prop("checked",true);
        }
    }
};
$(function() {
    resetSize();
    editRoleMenu.init();
    resetSize();
});

